﻿/*

Copyright 2010 OK HOSTING S.C.
info@okhosting.com
okhosting.com

La librería OKHOSTING.FacturaGratis es software gratuito: puede redistribuirlo 
y/o modificarlo de acuerdo a los términos expuestos en la licencia pública general 
GNU, publicada por la fundación de software libre (Free Software Foundation),
considerando la versión 3 de la licencia o cualquier otra superior.

OKHOSTING.FacturaGratis se distribuye con la esperanza de que le será de utilidad,
no obstante, no se ofrece garantía de ningun tipo, ni en el aspecto comercial o
de que la solución resulte adecuada a su negocio particular. Por favor revise la
licencia publica general GNU para mas información.

Usted debe haber recibido una copia de la licencia publica general GNU junto con 
la librería OKHOSTING.FacturaGratis, pero en caso contrario lo invitamos a que 
revise http://www.gnu.org/licenses/

******************************************************************************
OKHOSTING.FacturaGratis library is free software: you can redistribute 
it and/or modify it under the terms of the GNU General Public License as 
published by the Free Software Foundation, either version 3 of the License, 
or any later version.

OKHOSTING.FacturaGratis is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for 
more details.

You should have received a copy of the GNU General Public License along with 
OKHOSTING.FacturaGratis Library.  If not, see <http://www.gnu.org/licenses/>.

*/

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace OKHOSTING.FacturaGratis
{
	/// <summary>
	/// Representa un concepto, producto o servicio que se factura
	/// </summary>
	public struct Concepto
    {

        #region Constructrores

        /// <summary>
        /// Construye la estructura
        /// </summary>
        /// <param name="Cantidad">
        /// Cantidad de elementos que se facturan
        /// </param>
        /// <param name="Unidad">
        /// Unidad con la que se mide este concepto
        /// </param>
        /// <param name="NoIdentificacion">
        /// Código del concepto
        /// </param>
        /// <param name="Descripcion">
        /// Descripción del concepto
        /// </param>
        /// <param name="ValorUnitario">
        /// Valor unitario o precio del concepto
        /// </param>
        public Concepto(
            decimal Cantidad,
            string Unidad,
            string NoIdentificacion,
            string Descripcion,
            decimal ValorUnitario)
        {
            this.Cantidad = Cantidad;
            this.Unidad = Unidad;
            this.NoIdentificacion = NoIdentificacion;
            this.Descripcion = Descripcion;
            this.ValorUnitario = ValorUnitario;
        }

        #endregion

        #region Campos

        /// <summary>
		/// Cantidad de elementos que se facturan
		/// </summary>
		public decimal Cantidad;

		/// <summary>
		/// Unidad con la que se mide este concepto
		/// </summary>
		/// <example>Pieza, Kilo, Litro</example>
		public string Unidad;

		/// <summary>
		/// Código del concepto
		/// </summary>
		public string NoIdentificacion;

		/// <summary>
		/// Descripción del concepto
		/// </summary>
		public string Descripcion;

		/// <summary>
		/// Valor unitario o precio del concepto
		/// </summary>
		public decimal ValorUnitario;

		/// <summary>
		/// Importe total que se factura por el concepto
		/// </summary>
		/// <remarks>Equivalente a la multiplicación Cantidad x ValorUnitario</remarks>
        public decimal Importe
        {
            get { return this.Cantidad * this.ValorUnitario; }
        }

        #endregion

    }
}